load("@rules_rust//rust:defs.bzl", "rust_shared_library")
load("@rules_rust//cargo:cargo_build_script.bzl", "cargo_build_script")
load("@bazel_skylib//lib:selects.bzl", "selects")
load("//rslib:rustfmt.bzl", "rustfmt_fix", "rustfmt_test")

cargo_build_script(
    name = "build_script",
    srcs = ["build.rs"],
    build_script_env = {
        "PYO3_PYTHON": "$(location @python)",
    },
    data = [
        "@python",
    ],
)

rust_shared_library(
    name = "rsbridge",
    srcs = ["lib.rs"],
    rustc_flags = selects.with_or({
        (
            "@rules_rust//rust/platform:x86_64-apple-darwin",
            "@rules_rust//rust/platform:aarch64-apple-darwin",
        ): [
            "-Clink-arg=-undefined",
            "-Clink-arg=dynamic_lookup",
            "-Clink-arg=-mmacosx-version-min=10.13",
        ],
        "//conditions:default": [],
    }),
    visibility = [
        "//pylib:__subpackages__",
    ],
    deps = [
        ":build_script",
        "//pylib/rsbridge/cargo:pyo3",
        "//rslib:anki",
    ],
)

rustfmt_test(
    name = "format_check",
    srcs = glob([
        "*.rs",
    ]),
)

rustfmt_fix(
    name = "format",
    srcs = glob([
        "*.rs",
    ]),
)
